{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import re\n",
    "import random"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def remove_space(string, threshold = 0.3):\n",
    "    string = [s for s in string if not (s == ' ' and random.random() >= threshold)]\n",
    "    return ''.join(string)\n",
    "\n",
    "def package(string, repeat = 2):\n",
    "    result = [(string, string)]\n",
    "    result.append((string.lower(), string.lower()))\n",
    "    \n",
    "    for _ in range(repeat):\n",
    "        result.append((remove_space(string), string))\n",
    "        result.append((remove_space(string.lower()), string.lower()))\n",
    "        \n",
    "    return result\n",
    "\n",
    "from tqdm import tqdm\n",
    "\n",
    "def loop(strings):\n",
    "    results = []\n",
    "    for i in tqdm(range(len(strings))):\n",
    "        p = package(strings[i])\n",
    "        results.extend(p)\n",
    "    return results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "files = ['../pure-text/filtered-dumping-wiki.txt',\n",
    "        '../pure-text/dumping-cleaned-news.txt',\n",
    "        '../pure-text/dumping-iium.txt']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2037249"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "with open(files[0]) as fopen:\n",
    "    data = list(filter(None, fopen.read().split('\\n')))\n",
    "    \n",
    "data = [i for i in data if len(i) >= 2]\n",
    "\n",
    "len(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('Dirk Jan Klaas \"Klaas-Jan\" Huntelaar (lahir 12 Ogos 1983) merupakan pemain bola sepak Belanda yang bermain di posisi penyerang.',\n",
       "  'Dirk Jan Klaas \"Klaas-Jan\" Huntelaar (lahir 12 Ogos 1983) merupakan pemain bola sepak Belanda yang bermain di posisi penyerang.'),\n",
       " ('dirk jan klaas \"klaas-jan\" huntelaar (lahir 12 ogos 1983) merupakan pemain bola sepak belanda yang bermain di posisi penyerang.',\n",
       "  'dirk jan klaas \"klaas-jan\" huntelaar (lahir 12 ogos 1983) merupakan pemain bola sepak belanda yang bermain di posisi penyerang.'),\n",
       " ('Dirk JanKlaas\"Klaas-Jan\" Huntelaar(lahir 12Ogos1983)merupakanpemain bolasepakBelandayang bermaindiposisipenyerang.',\n",
       "  'Dirk Jan Klaas \"Klaas-Jan\" Huntelaar (lahir 12 Ogos 1983) merupakan pemain bola sepak Belanda yang bermain di posisi penyerang.'),\n",
       " ('dirk jan klaas \"klaas-jan\"huntelaar(lahir12 ogos 1983)merupakanpemainbolasepak belandayangbermaindi posisipenyerang.',\n",
       "  'dirk jan klaas \"klaas-jan\" huntelaar (lahir 12 ogos 1983) merupakan pemain bola sepak belanda yang bermain di posisi penyerang.'),\n",
       " ('DirkJan Klaas\"Klaas-Jan\"Huntelaar(lahir12 Ogos 1983)merupakanpemainbola sepakBelandayang bermaindiposisipenyerang.',\n",
       "  'Dirk Jan Klaas \"Klaas-Jan\" Huntelaar (lahir 12 Ogos 1983) merupakan pemain bola sepak Belanda yang bermain di posisi penyerang.'),\n",
       " ('dirkjanklaas\"klaas-jan\"huntelaar (lahir12ogos1983)merupakanpemainbola sepakbelandayangbermain diposisi penyerang.',\n",
       "  'dirk jan klaas \"klaas-jan\" huntelaar (lahir 12 ogos 1983) merupakan pemain bola sepak belanda yang bermain di posisi penyerang.')]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "package(data[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = random.sample(data, 300000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 91%|█████████▏| 17115/18750 [00:00<00:00, 22181.72it/s]\n",
      "100%|██████████| 18750/18750 [00:00<00:00, 21516.38it/s]\n",
      "100%|██████████| 18750/18750 [00:00<00:00, 19919.20it/s]\n",
      "\n",
      "100%|██████████| 18750/18750 [00:00<00:00, 20121.88it/s]\n",
      "100%|██████████| 18750/18750 [00:00<00:00, 20156.16it/s]\n",
      "\n",
      "100%|██████████| 18750/18750 [00:00<00:00, 21683.07it/s]\n",
      " 89%|████████▉ | 16644/18750 [00:01<00:00, 17526.51it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 17401.83it/s]\n",
      "100%|██████████| 18750/18750 [00:00<00:00, 18848.81it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 17499.35it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 16606.78it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 15948.86it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 17571.13it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 16410.85it/s]\n"
     ]
    }
   ],
   "source": [
    "import cleaning\n",
    "\n",
    "results1 = cleaning.multiprocessing(data, loop)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1800000"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(results1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('Umur median ialah 41.2 tahun (lelaki:38.5/perempuan:43.7).',\n",
       "  'Umur median ialah 41.2 tahun (lelaki:38.5/perempuan:43.7).'),\n",
       " ('umur median ialah 41.2 tahun (lelaki:38.5/perempuan:43.7).',\n",
       "  'umur median ialah 41.2 tahun (lelaki:38.5/perempuan:43.7).'),\n",
       " ('Umurmedianialah41.2tahun(lelaki:38.5/perempuan:43.7).',\n",
       "  'Umur median ialah 41.2 tahun (lelaki:38.5/perempuan:43.7).'),\n",
       " ('umurmedian ialah41.2 tahun(lelaki:38.5/perempuan:43.7).',\n",
       "  'umur median ialah 41.2 tahun (lelaki:38.5/perempuan:43.7).'),\n",
       " ('Umurmedianialah 41.2 tahun(lelaki:38.5/perempuan:43.7).',\n",
       "  'Umur median ialah 41.2 tahun (lelaki:38.5/perempuan:43.7).'),\n",
       " ('umurmedian ialah41.2tahun(lelaki:38.5/perempuan:43.7).',\n",
       "  'umur median ialah 41.2 tahun (lelaki:38.5/perempuan:43.7).'),\n",
       " ('Pengurniaan beberapa Bintang Kebesaran juga termasuk pengurniaan gelaran, yang mana gelaran berkenaan akan menjadi sebahagian daripada nama peribadi penerima dalam persuratan rasmi atau apabila disebut dalam media rasmi di negara ini.',\n",
       "  'Pengurniaan beberapa Bintang Kebesaran juga termasuk pengurniaan gelaran, yang mana gelaran berkenaan akan menjadi sebahagian daripada nama peribadi penerima dalam persuratan rasmi atau apabila disebut dalam media rasmi di negara ini.'),\n",
       " ('pengurniaan beberapa bintang kebesaran juga termasuk pengurniaan gelaran, yang mana gelaran berkenaan akan menjadi sebahagian daripada nama peribadi penerima dalam persuratan rasmi atau apabila disebut dalam media rasmi di negara ini.',\n",
       "  'pengurniaan beberapa bintang kebesaran juga termasuk pengurniaan gelaran, yang mana gelaran berkenaan akan menjadi sebahagian daripada nama peribadi penerima dalam persuratan rasmi atau apabila disebut dalam media rasmi di negara ini.'),\n",
       " ('Pengurniaanbeberapa BintangKebesaranjugatermasukpengurniaangelaran, yangmana gelaranberkenaan akan menjadisebahagiandaripadanamaperibadipenerimadalampersuratanrasmiatauapabiladisebut dalammedia rasmidinegaraini.',\n",
       "  'Pengurniaan beberapa Bintang Kebesaran juga termasuk pengurniaan gelaran, yang mana gelaran berkenaan akan menjadi sebahagian daripada nama peribadi penerima dalam persuratan rasmi atau apabila disebut dalam media rasmi di negara ini.'),\n",
       " ('pengurniaan beberapabintang kebesaranjugatermasukpengurniaan gelaran,yangmanagelaran berkenaanakan menjadisebahagian daripada namaperibadi penerimadalampersuratanrasmiatauapabiladisebutdalammediarasmidinegara ini.',\n",
       "  'pengurniaan beberapa bintang kebesaran juga termasuk pengurniaan gelaran, yang mana gelaran berkenaan akan menjadi sebahagian daripada nama peribadi penerima dalam persuratan rasmi atau apabila disebut dalam media rasmi di negara ini.')]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results1[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "\n",
    "with open('segmentation-wiki-single.json', 'w') as fopen:\n",
    "    json.dump(results1, fopen)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(files[1]) as fopen:\n",
    "    data = list(filter(None, fopen.read().split('\\n')))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "del results1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = random.sample(data, 300000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 87%|████████▋ | 16290/18750 [00:01<00:00, 16983.45it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 16151.17it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 16476.38it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 17080.93it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 16326.53it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 15865.69it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 17586.74it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 15408.59it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 15953.31it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 16000.04it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 16239.26it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 16244.67it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 15012.94it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 14545.24it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 13042.82it/s]\n",
      "100%|██████████| 18750/18750 [00:01<00:00, 13897.50it/s]\n"
     ]
    }
   ],
   "source": [
    "results1 = cleaning.multiprocessing(data, loop)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1800000"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(results1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('segmentation-news-single.json', 'w') as fopen:\n",
    "    json.dump(results1, fopen)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1121978"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "with open(files[2]) as fopen:\n",
    "    data = list(filter(None, fopen.read().split('\\n')))\n",
    "    \n",
    "len(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = random.sample(data, 400000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 25000/25000 [00:00<00:00, 27897.40it/s]\n",
      "100%|██████████| 25000/25000 [00:00<00:00, 28228.77it/s]\n",
      "100%|██████████| 25000/25000 [00:00<00:00, 26359.38it/s]\n",
      "100%|██████████| 25000/25000 [00:00<00:00, 25118.70it/s]\n",
      " 89%|████████▉ | 22301/25000 [00:00<00:00, 18408.24it/s]\n",
      "100%|██████████| 25000/25000 [00:00<00:00, 27750.99it/s]\n",
      "100%|██████████| 25000/25000 [00:00<00:00, 28103.44it/s]\n",
      "100%|██████████| 25000/25000 [00:00<00:00, 25969.80it/s]\n",
      "100%|██████████| 25000/25000 [00:01<00:00, 24828.40it/s]\n",
      "100%|██████████| 25000/25000 [00:01<00:00, 23755.70it/s]\n",
      "100%|██████████| 25000/25000 [00:00<00:00, 26268.22it/s]\n",
      "100%|██████████| 25000/25000 [00:00<00:00, 27186.29it/s]\n",
      "100%|██████████| 25000/25000 [00:00<00:00, 25236.78it/s]\n",
      "\n",
      "100%|██████████| 25000/25000 [00:01<00:00, 24919.31it/s]\n",
      "100%|██████████| 25000/25000 [00:00<00:00, 25082.26it/s]\n"
     ]
    }
   ],
   "source": [
    "results1 = cleaning.multiprocessing(data, loop)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2400000"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(results1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('Sebab wafi cakap saya ni sedih kehilangan umi mengalahkan anak dia sendiri.',\n",
       "  'Sebab wafi cakap saya ni sedih kehilangan umi mengalahkan anak dia sendiri.'),\n",
       " ('sebab wafi cakap saya ni sedih kehilangan umi mengalahkan anak dia sendiri.',\n",
       "  'sebab wafi cakap saya ni sedih kehilangan umi mengalahkan anak dia sendiri.'),\n",
       " ('Sebabwaficakapsayanisedih kehilanganumi mengalahkan anakdia sendiri.',\n",
       "  'Sebab wafi cakap saya ni sedih kehilangan umi mengalahkan anak dia sendiri.'),\n",
       " ('sebab waficakap sayani sedihkehilangan umimengalahkan anak diasendiri.',\n",
       "  'sebab wafi cakap saya ni sedih kehilangan umi mengalahkan anak dia sendiri.'),\n",
       " ('Sebabwaficakapsayanisedihkehilangan umimengalahkan anak diasendiri.',\n",
       "  'Sebab wafi cakap saya ni sedih kehilangan umi mengalahkan anak dia sendiri.'),\n",
       " ('sebab wafi cakapsayanisedih kehilanganumimengalahkananakdiasendiri.',\n",
       "  'sebab wafi cakap saya ni sedih kehilangan umi mengalahkan anak dia sendiri.'),\n",
       " ('.mesti korang terfikir knp boss aku x bg diorangkan.',\n",
       "  '.mesti korang terfikir knp boss aku x bg diorangkan.'),\n",
       " ('.mesti korang terfikir knp boss aku x bg diorangkan.',\n",
       "  '.mesti korang terfikir knp boss aku x bg diorangkan.'),\n",
       " ('.mesti korangterfikirknpbossakuxbgdiorangkan.',\n",
       "  '.mesti korang terfikir knp boss aku x bg diorangkan.'),\n",
       " ('.mestikorangterfikir knp bossaku xbgdiorangkan.',\n",
       "  '.mesti korang terfikir knp boss aku x bg diorangkan.')]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results1[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('segmentation-iium-single.json', 'w') as fopen:\n",
    "    json.dump(results1, fopen)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
